﻿using Dapper;
using Estsh.Core.Base;
using Estsh.Core.Model.Extend.Models;
using Estsh.Core.Models;
using Estsh.Core.Model.Extend;
using Estsh.Core.Repositories;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Estsh.Core.Wms.IRepositories
{
    public interface ICycleCountRepository : IBaseRepository<BaseEntity>
    {
        public List<WmsCheckStock> GetCycleCountOrderList(string orderNo);
        public List<WmsCheckStock> GetCycleCountOrderListByOrderNo(string orderNo);
        public SysLocate GetLocateByLocateName(string locateName);
        public WmsCheckStockRange GetWmsCheckStockRangeByLocateName(string orderNo, string locateName, string zoneName);
        public List<WmsCheckStock> GetWmsCheckStockQtyFactByTurnoverBoxLocateName(string orderNo, string locateName, string cartonNo);
        public List<WmsCheckStock_Extend> GetWmsCheckStockQtyFactByLocateName(string orderNo, string locateName);
        public List<WmsRackPackage_Extend> GetWmsRackPackageInfo(string CartonNo, string FactoryId);
        public List<WmsCheckStock> GetFinishCycleCountData(string orderNo);
        public SysPart GetPartNOInfoByPartNo(string partNo);
        public List<SysStock> GetStockByCaronNo(string cartonNo);
        public List<SysStock> GetRackPackageStockByCaronNo(string cartonNo);
        public List<WmsCheckStockRange> GetWmsCheckStockRangeByIsExsistPartNo(string orderNo, string locateName, string zoneName, string partNo);
        public List<WmsCheckStock> GetWmsCheckStockByCartonNo(string orderNo, string cartonNo);
        public List<WmsCheckStockList_Extend> GetWmsCheckStockListkByBox(string orderNo, string turnoverBoxNo, string locateId);
        public List<WmsCheckStock> GetWmsCheckStockByCartonNo(string orderNo);
        public int InsertCheckStockListInfo(WmsCheckStockList checkStockList);
        public int InsertCheckStockListInfos (List<WmsCheckStockList_Extend> checkStockList);
        public int UpdateCheckStockOrderStatus(string orderNo, string loginId);
        public int SQLTransaction(List<string> sqlStrings, List<DynamicParameters> parameterList);
    }
}
